package patterns.singleton;

/**
 * Created by lenovo on 2016/11/22 0022.
 * 双检锁/双重校验模式，线程安全，效率高效，但是实现难度有点复杂。
 */
public class DoubleChecked {
    //声明对象
    private volatile static DoubleChecked instance;
    //私有化构造函数
    private DoubleChecked(){}

    //对外公开获取实例对象的方法
    public static DoubleChecked getInstance(){
        if (instance ==null){
            //同步代码块
            synchronized (DoubleChecked.class){
                //再次校验，确保同步安全
                if (instance==null){
                    instance = new DoubleChecked();
                }
            }
        }
        return instance;
    }

    //随便写一个方法，用于测试demo
    public void show(){
        System.out.println("双检锁模式");
    }
}
